package com.hanamaki.study.junit.paramters;

import com.hanamaki.study.utils.jdbc.JdbcUtils;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.ParentRunner;

/**
 * 参数化测试？
 * 1. 修改类的运行方式  @RunWith(ParentRunner.class)
 * 2. 观察需要测试大的方法中 需要几个参数 就在测试类中 定义几个 属性 以及有参构造
 * 3. 创建 参数化所需要的  数据 使用 二维数组 集合
 */
@RunWith(Parameterized.class)
public class JunitAddTest {

    int first_par;
    int second_par;
    int exp_par;

    public JunitAddTest(String first_par, String second_par,String exp_par) {
        /* 使用包装类进行数据类型的转换 */

        this.first_par = Integer.parseInt(first_par);
        this.second_par = Integer.parseInt(second_par);
        this.exp_par = Integer.parseInt(exp_par);

    }

    static AddTest addTest;
    /*调用？ */
    @BeforeClass
    public static void setUp() {
         addTest = new AddTest();
    }

    @Test
    public void t() {
        int add = addTest.add(first_par, second_par);
        /* 可以使用 Assert 来判断是否成功 */
        System.out.println(add);
        Assert.assertEquals(exp_par, add);
    }

    @Parameterized.Parameters
    public static String[][] getPar() throws Exception {
        /* 数组的赋值方式 动态 静态 */
//        return new String[][]{
//                new String[]{"2", "3", "5"},
//                new String[]{"1", "3", "4"},
//                new String[]{"3", "3", "3"},
//                new String[]{"4", "3", "6"}
//        };

        return JdbcUtils.getSqlContentPar("num");
    }

}
